package com.xiaoye.digitaltwin.controller;

import java.io.IOException;
import java.net.*;

import com.xiaoye.digitaltwin.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 传感器压力
 * Create by xiaoye on 2023/8/2
 * 获取压力值
 */

@Slf4j
@RestController
@RequestMapping("/press")
public class PressController {

    /**
     * 获取传感器压力值，因为没有在正式服务器上面测试过，暂时先返回40
     *
     * @return
     */
    @GetMapping
    public R<String> getPress() {
        //真正可以去服务器上测试的时候使用下面的代码

//        DatagramSocket clientSocket = null;
//        try {
//            // 创建一个UDP Socket
//            clientSocket = new DatagramSocket();
//
//            // 设置发送数据报文的内容
//            String message = "<s>1124,000100000001,121.196.31.14,5055<e>";
//            byte[] sendData = message.getBytes();
//
//            // 设置服务器的IP地址和端口号
//            InetAddress serverIPAddress = InetAddress.getByName("192.0.0.1");
//            int serverPort = 5055;
//
//            // 创建发送数据报文的UDP数据包
//            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverIPAddress, serverPort);
//
//            // 发送数据报文
//            clientSocket.send(sendPacket);
//
//            // 创建接收数据报文的UDP数据包
//            byte[] receiveData = new byte[1024];
//            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
//
//            // 接收服务器的响应数据报文
//            clientSocket.receive(receivePacket);
//
//            // 将接收到的数据报文转换为字符串
//            String response = new String(receivePacket.getData());
//
//            // 解析服务器响应数据报文，获取压力值
//            String[] fields = response.split(",");
//            String pressure = fields[2];
//
//            // 输出获取到的压力值
//            System.out.println("Pressure: " + pressure);
//            return R.success(pressure);
//        } catch (SocketTimeoutException e) {
//            // 超时异常
//            System.out.println("Timeout: " + e.getMessage());
//            R.error("超时异常");
//        } catch (IOException e) {
//            // IO异常
//            System.out.println("IO Error: " + e.getMessage());
//            R.error("IO异常");
//        }finally {
//            // 关闭UDP Socket
//            if(clientSocket != null){
//                clientSocket.close();
//            }
//        }

        return R.success("40");//先默认40
    }
}
